package com.example.backed.service;

import com.example.backed.dto.ProductQuery;
import com.example.backed.dto.ProductRequest;
import com.example.backed.entity.Product;

import java.util.List;

public interface ProductService {
    /**
     * 创建商品
     *
     * @param request 商品创建请求
     * @return 创建的商品信息
     */
    Product createProduct(ProductRequest request);

    /**
     * 更新商品
     *
     * @param id 商品ID
     * @param request 商品更新请求
     * @return 更新后的商品信息
     */
    Product updateProduct(Long id, ProductRequest request);

    /**
     * 删除商品
     *
     * @param id 商品ID
     */
    void deleteProduct(Long id);

    /**
     * 获取商品详情
     *
     * @param id 商品ID
     * @return 商品信息
     */
    Product getProduct(Long id);

    /**
     * 查询商品列表
     *
     * @param query 查询条件
     * @return 商品列表
     */
    List<Product> listProducts(ProductQuery query);

    /**
     * 获取商品总数
     *
     * @param query 查询条件
     * @return 商品总数
     */
    long countProducts(ProductQuery query);

    /**
     * 更新商品库存
     *
     * @param id 商品ID
     * @param stock 库存变化量（正数增加，负数减少）
     * @return 是否更新成功
     */
    boolean updateStock(Long id, Integer stock);
} 